macro_rules! example {
    // 1. 简单固定匹配，不需要 $
    () => {
        println!("Empty match!");
    };

    // 2. 固定字面量匹配，不需要 $
    (hello) => {
        println!("Hello match!");
    };

    // 3. 使用元变量的匹配，需要 $
    ($x:expr) => {
        println!("Expression: {}", $x);
    };

    // 4. 混合使用
    (print $x:expr) => {
        println!("Printing: {}", $x);
    };

    // 5. 重复模式，需要 $
    (sum $($x:expr),*) => {
        {
            let mut total = 0;
            $(
                total += $x;
            )*
            total
        }
    };
}

fn main() {
    example!();           // 匹配第1个规则
    example!(hello);      // 匹配第2个规则
    example!(42);         // 匹配第3个规则
    example!(print 42);   // 匹配第4个规则
    let sum = example!(sum 1, 2, 3);  // 匹配第5个规则
    println!("Sum: {}", sum);
}